#pragma once
#include <list>
#include "EpilToken.h"

using namespace std;


class EpilParser;


template<typename T>
class EpilSyntaxParser
{
public:
	EpilSyntaxParser( const EpilParser * parser ) : m_parser( parser ) {}

	const EpilParser *					GetParser() const								{ return m_parser; }

	virtual T *							Parse( const list<EpilToken>::const_iterator & itBegin, list<EpilToken>::const_iterator & itEnd ) = 0;

private:
	const EpilParser *					m_parser;
};